const app = getApp()
const {
  login, decryptPhone, wxSessionKey
} = require('../../api/base')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isLogin: false,
    userInfoVisible: true,
    phoneNumberVisible: false,
    userInfo: {},
    userData: null,
    phoneData: null,
    openId : null,
    sessionKey : null

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    app.userInfo &&
    this.setData({
      isLogin: true,
      userInfo: app.userInfo
    })
    this.authLogin(); 
  },
  authLogin() {
    wx.login({
      success: response => {
        this.setData({
          code: response.code
        })
        // if (this.data.autoRegister) {
        //   this.showUserInfo()
        // } else {
        // this.login()
        // }
      },
      fail: response => {
        console.log(response)
      }
    })
  },
    // 微信获取用户信息
    getUserInfo(response) {
      const logger = wx.getRealtimeLogManager()
          logger.error('获取用户信息', {str: response})
          console.log(response)
          wx.showLoading({
            title: '',
          })
          if (response.detail.encryptedData) {
            this.setData({
              userData: res.detail
            })
            wx.hideLoading();
            this.showPhoneNumber()
          } else {
            wx.hideLoading();
            this.showAgainLogin()
          }
      
    },
    getUserProfile(e) {
      // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
      // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
      wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
        success: (res) => {
          console.log(res)
          const logger = wx.getRealtimeLogManager()
          logger.error('获取用户信息', {str: res})
          if (res.encryptedData) {
            this.setData({
              userData: res.userInfo
            })
            wx.hideLoading();
            this.showPhoneNumber()
          } else {
            wx.hideLoading();
            this.showAgainLogin()
          }
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    },
    showAgainLogin(){
      wx.showModal({
        title: '提示',
        content: '登录失败',
        confirmText: '重新登录',
        success: res => {
          if (res.confirm) {
            this.hideUserInfo()
          } else if (res.cancel) {
            console.log('用户点击取消')
          }
        }
      })
    },
     // 隐藏获取用户信息模态框
  hideUserInfo() {
    this.setData({
      userInfoVisible: false,
      phoneNumberVisible: true
    })
  },
  showPhoneNumber() {
    this.setData({
      userInfoVisible: false,
      phoneNumberVisible: true
    })
  },
    // 微信获取用户手机号
    getPhoneNumber(response) {
      const scope = this;
      wx.showLoading({
        title: '',
      })
      
      if (response.detail.encryptedData) {
        const appId = wx.getAccountInfoSync().miniProgram.appId;
        const secret_code = "1115b9d4e1da41cd7ae2a11a525931d7";
        //获取session_key
        wxSessionKey({appId : appId, secret : secret_code, js_code : this.data.code}).then(res=>{
            scope.setData({
              openId: res.data.openid, //获取到的openid 
              sessionKey: res.data.session_key //获取到session_key 
            });
            //获取解密后电话
            const params = {
              encryptedData : response.detail.encryptedData,
              sessionKey : res.data.session_key,
              iv : response.detail.iv
            };
            decryptPhone(params).then(res=>{
              scope.setData({
                phoneData: res.data.phoneNumber
              })
              scope.login()
            })
        })
      } else {
        if (response.detail.errMsg && response.detail.errMsg.indexOf("getPhoneNumber:fail") != -1 && response.detail.errMsg.indexOf("getPhoneNumber:fail user deny") == -1) {
          this.setData({
            phoneData: ""
          })
          wx.hideLoading()
          //this.login()
        } else {
          wx.hideLoading()
          this.showAgainLogin()
        }
      }
      // this.hidePhoneNumber()
    },
    
    login(){
      let obj=Object.assign({code:this.data.code},{mobile:this.data.phoneData},this.data.userData,{openId:this.data.openId})
      login(obj).then(res=>{
        app.userInfo=res.data
        app.isLogin=true
        wx.navigateBack()
      })
    },
    cancelAction(){
      wx.navigateBack()
    },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})